/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package trabajosubversion;

import Logica.*;
import javax.swing.*;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.ImageObserver;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.Writer;
import java.text.AttributedCharacterIterator;
import java.util.*;

public class Dibujo extends JApplet implements ActionListener {

    ArrayList<Integer> datosEnX = new ArrayList<Integer>();
    ArrayList<Integer> datosEnY = new ArrayList<Integer>();
    JPanel panel;
    JPanel centro;
    JPanel sur = new JPanel();
    JPanel Izquierda = new JPanel();
    JTextField datoX = new JTextField("0");
    JTextField datoY = new JTextField("0");
    JButton dib = new JButton("Graficar Punto");
    JTextField menMinx;
    JTextField menMax;
    JTextField menSumx;
    JTextField menProx;
    JTextField menMiny;
    JTextField menMay;
    JTextField menSumy;
    JTextField menProy;
    JTextField MINx;
    JTextField Max;
    JTextField Sumx;
    JTextField Prox;
    JTextField Miny;
    JTextField May;
    JTextField Sumy;
    JTextField Proy;
    boolean primero = true;
    Facade f;
    public Dibujo() {
        f=new Facade();
        f.leerArchivo(datosEnX, datosEnY);
    }

 

    public void paint(Graphics g) {
        
        if (primero == true) {
            for (int i = 0; i < datosEnX.size(); i++) {
                g.drawLine(datosEnX.get(i) - 5, datosEnY.get(i) - 5, datosEnX.get(i) + 5, datosEnY.get(i) + 5);
                g.drawLine(datosEnX.get(i) - 5, datosEnY.get(i) + 5, datosEnX.get(i) + 5, datosEnY.get(i) - 5);
            }
            for (int i = 0; i <= 700; i = i + 20) {
            g.drawLine(0, i, 700, i);
            g.drawLine(i, 0, i, 700);
        }
         for (int i = 0; i <= 700; i = i + 20) {
            g.drawString(i+"", i, 710);
            g.drawString(i+"",710, i);
        }
        }

        
        g.fillOval(Integer.parseInt(datoX.getText()), Integer.parseInt(datoY.getText()), 2, 2);

        g.drawLine(Integer.parseInt(datoX.getText()) - 5, Integer.parseInt(datoY.getText()) - 5, Integer.parseInt(datoX.getText()) + 5, Integer.parseInt(datoY.getText()) + 5);
        g.drawLine(Integer.parseInt(datoX.getText()) - 5, Integer.parseInt(datoY.getText()) + 5, Integer.parseInt(datoX.getText()) + 5, Integer.parseInt(datoY.getText()) - 5);


    }

    public void init() {
        new Dibujo();
        this.setSize(900, 900);

        setLayout(new BorderLayout());
        centro = new JPanel();

        sur.setLayout(new GridLayout(2, 8));

        menMinx = new JTextField("Minimo en X:");
        menMax = new JTextField("Maximo en X:");
        menSumx = new JTextField("Suma en X:");
        menProx = new JTextField("Pro en X:");
        menMiny = new JTextField("Minimo en Y:");
        menMay = new JTextField("Maximo en Y:");
        menSumy = new JTextField("Suma en Y:");
        menProy = new JTextField("Pro en Y:");

        MINx = new JTextField("");
        Max = new JTextField("");
        Sumx = new JTextField("");
        Prox = new JTextField("");
        Miny = new JTextField("");
        May = new JTextField("");
        Sumy = new JTextField("");
        Proy = new JTextField("");
        sur.setBackground(Color.red);
        sur.add(menMinx);
        sur.add(MINx);
        sur.add(menMax);
        sur.add(Max);
        sur.add(menSumx);
        sur.add(Sumx);
        sur.add(menProx);
        sur.add(Prox);
        sur.add(menMiny);
        sur.add(Miny);
        sur.add(menMay);
        sur.add(May);
        sur.add(menSumy);
        sur.add(Sumy);
        sur.add(menProy);
        sur.add(Proy);
        Izquierda.setLayout(new GridLayout(3, 1));
        dib.addActionListener(this);
        dib.setActionCommand("Dibujar");
        datoX.setBounds(310, 310, 20, 10);
        datoY.setBounds(310, 310, 20, 10);
        dib.setBounds(310, 310, 20, 10);
        Izquierda.add(datoX);
        Izquierda.add(datoY);
        Izquierda.add(dib);
        add(sur, BorderLayout.SOUTH);
        add(Izquierda, BorderLayout.EAST);
        add(centro, BorderLayout.CENTER);

    }

    public void HacerEstadisticas() {
        
        MINx.setText(f.minimoX(datosEnX) + "");
        Max.setText(f.maximoX(datosEnX) + "");
        Sumx.setText(f.sumatoriaX(datosEnX) + "");
        Prox.setText(f.promedioX(datosEnX) + "");
        Miny.setText(f.minimoY(datosEnY) + "");
        May.setText(f.maximoY(datosEnY) + "");
        Sumy.setText(f.sumatoriaY(datosEnY) + "");
        Proy.setText(f.promedioY(datosEnY) + "");
    }



    public void actionPerformed(ActionEvent orden) {
        String name = orden.getActionCommand();
        if (name.equals("Dibujar")) {
            primero = false;
            datosEnX.add(Integer.parseInt(datoX.getText()));
            datosEnY.add(Integer.parseInt(datoY.getText()));
            HacerEstadisticas();
            f.escribirArchivo(Integer.parseInt(datoX.getText()) + " " + Integer.parseInt(datoY.getText()));
            repaint();
        }

    }
}
